lazy=true 使用懒加载(延迟)
lazy=extra (增强延迟)
Hibernate.initialize(obj.getObj()); 延迟加载时候需要立到了加载。可以调用这个静态方法
<generator class="native" /> 自增方式
例:
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
例:
<set name="students" table="t_students" inverse="true" order-by="id asc">
<key>
<column name="teacher_id"></column>
</key>
<one-to-many class="cc.www.hibernatedemo.model.StudentEntity"/>
</set>
例:
<set name="student" table="t_student" inverse="false" lazy="true" batch-size="10">
<key>
<column name="student_id" />
</key>
<one-to-many class="cc.www.hibernateproject.model.Student" />
</set>
查询hql语句: hql 是hibernate的sql语法,和sql类似.
//form Teacher是类
String hqlString ="from Teacher";
@SuppressWarnings("unchecked")
Query<Teacher> query =session.createQuery(hqlString);
List<Teacher> teachers = query.list();
System.out.println(teachers);
//遍历Tercher
for(Teacher t:teachers) {
System.out.println(t.getStudent().size());
}
fetch="select" 一次只发一条,默认
fetch="subselect" 指定子查询,发起的语句会少,但设置子查询batch-size会失效.
fetch="join" 左外连接查询, 左外查询不能用hql语句. batch-size和 lazy 都会失效